home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / code_lib / objlibr / objlib12 / sample1 / iconbar.frm < prev    next >
Text File  |  1995-06-04  |  8KB  |  288 lines

  1. VERSION 2.00
  2. Begin Form ChngIcon 
  3.    BackColor       =   &H00C0C0C0&
  4.    BorderStyle     =   3  'Fixed Double
  5.    Caption         =   "Change Icon"
  6.    ClientHeight    =   1830
  7.    ClientLeft      =   2310
  8.    ClientTop       =   2085
  9.    ClientWidth     =   6720
  10.    ControlBox      =   0   'False
  11.    Height          =   2235
  12.    Left            =   2250
  13.    LinkMode        =   1  'Source
  14.    LinkTopic       =   "Form1"
  15.    MaxButton       =   0   'False
  16.    MinButton       =   0   'False
  17.    ScaleHeight     =   122
  18.    ScaleMode       =   3  'Pixel
  19.    ScaleWidth      =   448
  20.    Top             =   1740
  21.    Width           =   6840
  22.    Begin HScrollBar hs 
  23.       Height          =   252
  24.       LargeChange     =   288
  25.       Left            =   1680
  26.       SmallChange     =   36
  27.       TabIndex        =   8
  28.       Top             =   1215
  29.       Width           =   3492
  30.    End
  31.    Begin PictureBox Pic1 
  32.       BackColor       =   &H00FFFFFF&
  33.       Height          =   510
  34.       Left            =   1680
  35.       ScaleHeight     =   32
  36.       ScaleMode       =   3  'Pixel
  37.       ScaleWidth      =   230
  38.       TabIndex        =   7
  39.       Top             =   720
  40.       Width           =   3480
  41.       Begin PictureBox icns 
  42.          AutoRedraw      =   -1  'True
  43.          BackColor       =   &H00FFFFFF&
  44.          BorderStyle     =   0  'None
  45.          DrawWidth       =   2
  46.          Height          =   480
  47.          Left            =   0
  48.          ScaleHeight     =   32
  49.          ScaleMode       =   3  'Pixel
  50.          ScaleWidth      =   218
  51.          TabIndex        =   9
  52.          Top             =   0
  53.          Width           =   3264
  54.       End
  55.    End
  56.    Begin TextBox Text1 
  57.       FontBold        =   0   'False
  58.       FontItalic      =   0   'False
  59.       FontName        =   "MS Sans Serif"
  60.       FontSize        =   8.25
  61.       FontStrikethru  =   0   'False
  62.       FontUnderline   =   0   'False
  63.       Height          =   285
  64.       Left            =   1680
  65.       TabIndex        =   1
  66.       Text            =   "Text1"
  67.       Top             =   240
  68.       Width           =   3480
  69.    End
  70.    Begin CommandButton Command1 
  71.       BackColor       =   &H00000000&
  72.       Caption         =   "&Browse..."
  73.       Height          =   372
  74.       Index           =   2
  75.       Left            =   5400
  76.       TabIndex        =   6
  77.       Top             =   1200
  78.       Width           =   1092
  79.    End
  80.    Begin CommandButton Command1 
  81.       BackColor       =   &H00000000&
  82.       Cancel          =   -1  'True
  83.       Caption         =   "Cancel"
  84.       Height          =   372
  85.       Index           =   1
  86.       Left            =   5400
  87.       TabIndex        =   5
  88.       Top             =   720
  89.       Width           =   1092
  90.    End
  91.    Begin CommandButton Command1 
  92.       BackColor       =   &H00000000&
  93.       Caption         =   "OK"
  94.       Default         =   -1  'True
  95.       Height          =   372
  96.       Index           =   0
  97.       Left            =   5400
  98.       TabIndex        =   4
  99.       Top             =   240
  100.       Width           =   1092
  101.    End
  102.    Begin PictureBox Picture2 
  103.       AutoRedraw      =   -1  'True
  104.       BackColor       =   &H00C0C0C0&
  105.       BorderStyle     =   0  'None
  106.       Height          =   615
  107.       Left            =   1780
  108.       ScaleHeight     =   615
  109.       ScaleWidth      =   615
  110.       TabIndex        =   3
  111.       Top             =   720
  112.       Width           =   615
  113.    End
  114.    Begin Label Label1 
  115.       Alignment       =   1  'Right Justify
  116.       AutoSize        =   -1  'True
  117.       BackColor       =   &H00C0C0C0&
  118.       BackStyle       =   0  'Transparent
  119.       Caption         =   "&Current Icon:"
  120.       Height          =   192
  121.       Index           =   1
  122.       Left            =   360
  123.       TabIndex        =   2
  124.       Top             =   720
  125.       Width           =   1128
  126.    End
  127.    Begin Label Label1 
  128.       Alignment       =   1  'Right Justify
  129.       AutoSize        =   -1  'True
  130.       BackStyle       =   0  'Transparent
  131.       Caption         =   "&Filename:"
  132.       Height          =   192
  133.       Index           =   0
  134.       Left            =   648
  135.       TabIndex        =   0
  136.       Top             =   264
  137.       Width           =   828
  138.    End
  139. End
  140. Option Explicit
  141. DefInt A-Z
  142. Dim dirty%
  143. Dim iconindex%
  144. Dim i%, r%
  145. Dim lastvalidfile$
  146. 'This form is a copy of the PM dialog, but the method
  147. 'of hiliting the selected icon differs:
  148. 'When a file is selected and its icons are
  149. 'extracted, they are blitted to a picturebox
  150. 'as a bitmap. For simplicity, the selected icon
  151. 'is indicated by a black square rather than by
  152. 'changing the background color.
  153.  
  154. Sub command1_click (Index As Integer)
  155. Dim f$
  156. Select Case Index
  157. Case 0'ok
  158.     'pass changes back to itemprops:
  159.     gItem.iconpath = text1
  160.     gItem.iconindex = iconindex
  161.     GetIcon gItem.iconpath, gItem.iconindex
  162.     Unload Me
  163. Case 1
  164.     Unload Me
  165. Case 2  'browse
  166.     f = GetFile(4, 4, 1): If f$ = "" Then Exit Sub
  167.     text1 = f$
  168.     LoadPics f$, 0
  169. End Select
  170. End Sub
  171.  
  172. Function ExtractIcons (f As Form, file$)
  173. Dim n%, r%, inst%, i%, h%
  174.  
  175. h% = f.hWnd
  176. inst% = GetWindowWord(h%, GWW_HINSTANCE)
  177.  
  178. 'get total icons in file
  179. n% = ExtractIcon(inst%, file$, -1)
  180. If n < 1 Then
  181.     MsgBox "The file contains no icons.": Exit Function
  182. End If
  183.  
  184. 'copy each to a bitmap
  185. screen.MousePointer = 11
  186. f.icns.Width = n * 36
  187. For i% = 0 To n - 1
  188.     GetIcon file$, i%
  189.     r = BitBlt(f.icns.hDC, i * 36 + 1, 1, 32, 32, sample1.loader.hDC, 0, 0, SRCCOPY)
  190. Next
  191. f.icns.Refresh
  192. ExtractIcons = n
  193. screen.MousePointer = 0
  194. End Function
  195.  
  196. Sub Form_Load ()
  197. 'in case icon size changes with screen resolution:
  198. 'note: this hasn't been tested on anything but 1...x7..
  199.     Pic1.Move 112, 48, 6 * 36, 36
  200.     icns.Move 0, 0, Pic1.Width, 34
  201.     hs.Move Pic1.Left, Pic1.Top + Pic1.Height - 1, Pic1.Width
  202.     text1.Width = Pic1.Width
  203. '
  204. text1 = Trim$(gItem.iconpath)
  205. If text1 = "" Then command1_click 2'prompt for file
  206. '
  207. lastvalidfile$ = text1
  208. LoadPics gItem.iconpath, gItem.iconindex
  209. End Sub
  210.  
  211. Sub Form_Paint ()
  212. RaiseForm Me
  213. End Sub
  214.  
  215. Sub GetIcon (file$, ndx%)
  216. Dim h%, r%, inst%
  217. inst% = GetWindowWord(sample1.hWnd, GWW_HINSTANCE)
  218. h% = ExtractIcon(inst%, file$, ndx%)
  219. sample1.loader.Cls
  220. If h% > 1 Then 'has icons
  221.     r% = DrawIcon(sample1.loader.hDC, 0, 0, h%)
  222. Else
  223.     sample1.loader = sample1.deficon
  224. End If
  225. sample1.i1 = sample1.loader.Image
  226. End Sub
  227.  
  228. Sub hs_Change ()
  229. icns.Left = -hs.Value
  230. End Sub
  231.  
  232. Sub icns_DblClick ()
  233. command1_click 0
  234. End Sub
  235.  
  236. Sub icns_mousedown (Button As Integer, Shift As Integer, X As Single, Y As Single)
  237. 'erase old hilite
  238. icns.Line (iconindex * 36, 0)-(iconindex * 36 + 34, 34), icns.BackColor, B
  239. 'get absolute index
  240. iconindex = X \ 36
  241. 'draw new hilite
  242. icns.Line (iconindex * 36, 0)-(iconindex * 36 + 34, 34), &H0&, B
  243. End Sub
  244.  
  245. Sub LoadPics (f$, ndx%)
  246. Dim total%
  247. '
  248. If f = "" Then Exit Sub
  249. 'check path, then try to load icons
  250. If FileLen(f$) Then
  251.     lastvalidfile$ = f$
  252. Else
  253.     MsgBox "Cannot open file."
  254.     text1 = lastvalidfile$: Exit Sub
  255. End If
  256.  
  257. 'copy file's icons to icns picbox
  258. total% = ExtractIcons(Me, f$)
  259. If total% = 0 Then Exit Sub
  260. '
  261. 'set scroll range
  262. If total% > 8 Then
  263.     hs.Enabled = -1
  264.     hs.Max = (total - 8) * 36
  265. Else
  266.     hs.Enabled = 0
  267. End If
  268. '
  269. 'hilite it
  270. iconindex = 0
  271. icns_mousedown 0, 0, ndx% * 36 + 3, 0
  272. End Sub
  273.  
  274. Sub Text1_Change ()
  275. dirty = -1
  276. End Sub
  277.  
  278. Sub Text1_GotFocus ()
  279. dirty = 0
  280. End Sub
  281.  
  282. Sub Text1_LostFocus ()
  283. If dirty% Then
  284.         LoadPics CStr(text1), 0
  285. End If
  286. End Sub
  287.  
  288.